package controladores;

import gamebook.UsuarioGenerico;
import java.util.ArrayList;
import java.util.List;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class loginServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        UsuarioGenerico usuario = null;
        List<String> errores = new ArrayList<String>();

        //Cogemos el mail y el login para hacer la comprobación
        String mail = request.getParameter("email");
        String pw = request.getParameter("password");

        try {
            //Primero nos aseguramos de que el mail y el login miden más de 3 caracteres
            if (mail.length() < 3 && pw.length() < 3) {
                //Mostrar error en el index respecto a los campos introducidos
                errores.add("Los campos de usuario y contrase&ntilde;a no estan bien introducidos");
            } else {
                //Pedimos el objeto usuario con el mail que hemos recibido
                usuario = UsuarioGenerico.validarUsuario(mail, pw);
                //Si hemos recibido el usuario es que la contraseña estaba bien
                if (usuario != null) {
                    //Cogemos el objeto sesion para guardar algunas cosas
                    HttpSession sesion = request.getSession();
                    //Guardamos el usuario que está utilizando la web
                    sesion.setAttribute("usuario", usuario);
                    //Guardamos el usuario del cuál se está visualizando el muro
                    sesion.setAttribute("usuariomuro", usuario);
                    //Creamos la ruta para redireccionar...
                    String ruta = getServletContext().getContextPath() + "/muro.jsp";
                    //...y redireccion al muro
                    //response.sendRedirect(ruta);
                    request.getRequestDispatcher("/muro.jsp").forward(request, response);
                } else {
                    //Mostrar error en el index respecto a que no se encontro usuario
                    errores.add("Nombre de usuario o contrase&ntilde;a erroneos");
                }
            }

            //Si hay errores los guardamos en la petición
            if (errores.size() > 0) {
                request.setAttribute("erroresLogin", errores);
                //Redirigimos de nuevo al index mostrando los errores
                request.getRequestDispatcher("/index.jsp").forward(request, response);
            }


        } catch (Exception e) {
            out.println("Error: LoginServlet: " + e.getMessage());
        } finally {
        }

    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
